home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February / PCWorld_2008-02_cd.bin / domacnost a kancelar / move action / moveaction.exe / mainthread.pas < prev    next >
Pascal/Delphi Source File  |  2007-12-14  |  2KB  |  83 lines

  1. unit mainthread;
  2.  
  3. interface
  4.  
  5. uses
  6.   shellapi, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, Buttons, clipbrd,ExtCtrls, AviCaptura, MMSystem,
  8.   Spin, JLCVideo, inifiles;
  9.  
  10. type
  11.   TMainThread = class(TThread)
  12.   private
  13.    frmOwner: TForm;
  14.   protected
  15.     procedure Execute; override;
  16.   public
  17.     constructor create(_frmOwner: TForm; _JLCVideo1: TJLCVideo);
  18.     destructor Destroy; override;
  19.   end;
  20.  
  21.  
  22. implementation
  23.  
  24. uses
  25.    unit1;
  26.  
  27.  
  28. {constructor}
  29. constructor TMainThread.create(_frmOwner: TForm; _JLCVideo1: TJLCVideo);
  30. begin
  31.    inherited create(true); // create but don't start running yet
  32.    frmOwner := _frmOwner;
  33. end;
  34.  
  35. {destructor}
  36. destructor TMainThread.Destroy;
  37. begin
  38.    inherited destroy;
  39. end;
  40.  
  41.  
  42. {main thread entry point}
  43. procedure TMainThread.Execute;
  44. var
  45.    mainForm: TForm1;
  46.    normalFrameinterval, fastFrameinterval, fastFrameintervalPeriod, intervalToUse: integer;
  47.    movementDetected: boolean;
  48.    fastFrameIntervalExpires: DWORD;
  49. begin
  50.    fastFrameIntervalExpires := 0;
  51.    mainForm := (frmOwner as TForm1);
  52.  
  53.    with TIniFile.Create(ExtractFilePath(Application.ExeName) + '\' + confFile) do
  54.    begin
  55.       normalFrameinterval := ReadInteger('main', 'normalFrameinterval', 1000);
  56.       fastFrameinterval := ReadInteger('main', 'fastFrameinterval', 100);
  57.       fastFrameintervalPeriod := ReadInteger('main', 'fastFrameintervalPeriod', 10) * 1000;
  58.       free;
  59.    end;
  60.  
  61.    repeat
  62.       movementDetected := mainForm.doMainIteration;
  63.  
  64.       // if we detect movement, speed up the frame rate for a while
  65.       if movementDetected then
  66.       begin
  67.          intervalToUse := fastFrameinterval;
  68.          fastFrameIntervalExpires := GetTickCount + fastFrameintervalPeriod;
  69.       end
  70.       else if GetTickCount > fastFrameIntervalExpires then
  71.       begin
  72.          intervalToUse := normalFrameinterval;
  73.       end;
  74.  
  75.       sleep(intervalToUse);
  76.  
  77.    until terminated;
  78. end;
  79.  
  80.  
  81.  
  82. end.
  83.